অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (Object-Oriented Programming, OOP) একটি প্রোগ্রামিং প্যারাডাইম, যেখানে ডেটা ও কার্যকলাপকে অবজেক্ট হিসেবে সংরক্ষণ ও পরিচালনা করা হয়। OOP এর মূলনীতিগুলি কোডকে আরও সুসংগঠিত, পুনরায় ব্যবহারযোগ্য, এবং রক্ষণাবেক্ষণযোগ্য করে তোলে। OOP এর প্রধান চারটি মূলনীতি হলো এনক্যাপসুলেশন (Encapsulation), ইনহেরিটেন্স (Inheritance), পলিমরফিজম (Polymorphism), এবং অ্যাবস্ট্রাকশন (Abstraction)।
এনক্যাপসুলেশন হলো ডেটা এবং মেথডকে একটি ক্লাসের মধ্যে বেঁধে রাখার প্রক্রিয়া। এর মাধ্যমে ডেটাকে বাইরের অ্যাক্সেস থেকে সুরক্ষিত রাখা যায় এবং শুধুমাত্র নির্দিষ্ট মেথডের মাধ্যমে ডেটা অ্যাক্সেস বা পরিবর্তন করা যায়।
public class Student {
private String name; // Private ভ্যারিয়েবল
// Public মেথড যা প্রাইভেট ডেটা অ্যাক্সেস করতে দেয়
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
name
ভ্যারিয়েবল private
হিসাবে ডিক্লেয়ার করা হয়েছে, তাই এটি সরাসরি বাইরে থেকে অ্যাক্সেস করা যায় না।setName
এবং getName
মেথডের মাধ্যমে name
ভ্যারিয়েবলে ডেটা সেট এবং রিট্রিভ করা যায়।এনক্যাপসুলেশনের মাধ্যমে কোডের সুরক্ষা বৃদ্ধি পায় এবং প্রোগ্রামের ডেটা পরিবর্তনের নিয়ন্ত্রণ থাকে নির্দিষ্ট মেথডের উপর।
ইনহেরিটেন্স হলো একটি ক্লাসের বৈশিষ্ট্যগুলো অন্য একটি ক্লাসে ব্যবহার করার প্রক্রিয়া। অর্থাৎ, একটি ক্লাস (চাইল্ড ক্লাস) অন্য একটি ক্লাসের (প্যারেন্ট ক্লাস) বৈশিষ্ট্য ও মেথড উত্তরাধিকার সূত্রে পায়। এটি কোড পুনরায় ব্যবহারযোগ্যতা এবং সহজতর করে।
// প্যারেন্ট ক্লাস
public class Person {
public String name;
public Integer age;
public void displayInfo() {
System.debug('Name: ' + name);
System.debug('Age: ' + age);
}
}
// চাইল্ড ক্লাস
public class Student extends Person {
public Integer studentId;
public void displayStudentInfo() {
displayInfo(); // প্যারেন্ট ক্লাসের মেথড ব্যবহার করা হচ্ছে
System.debug('Student ID: ' + studentId);
}
}
Student
ক্লাস Person
ক্লাস থেকে ইনহেরিট করেছে, যার ফলে Student
ক্লাস Person
ক্লাসের name
, age
এবং displayInfo()
মেথড ব্যবহার করতে পারছে।ইনহেরিটেন্সের মাধ্যমে কোড সহজে পুনরায় ব্যবহারযোগ্য হয় এবং কোড রিডন্ডেন্সি কমে।
পলিমরফিজম হলো একটি কাজ বা মেথডকে একাধিক উপায়ে সম্পাদন করার ক্ষমতা। একই মেথড নাম ভিন্ন ভিন্ন ক্লাসে ভিন্নভাবে কাজ করতে পারে। পলিমরফিজমের দুটি প্রধান রূপ হলো মেথড ওভারলোডিং এবং মেথড ওভাররাইডিং।
// মেথড ওভারলোডিং
public class Calculator {
public Integer add(Integer a, Integer b) {
return a + b;
}
public Double add(Double a, Double b) {
return a + b;
}
}
// মেথড ওভাররাইডিং
public class Animal {
public void makeSound() {
System.debug('Some sound...');
}
}
public class Dog extends Animal {
public override void makeSound() {
System.debug('Bark');
}
}
Calculator
ক্লাসের add
মেথড দুটি ইনপুট টাইপ অনুযায়ী ভিন্ন ভিন্ন উপায়ে কাজ করছে।Dog
ক্লাস Animal
ক্লাসের makeSound
মেথড ওভাররাইড করেছে, যার ফলে Dog
ক্লাসের makeSound
মেথড চালালে "Bark" প্রিন্ট হবে।পলিমরফিজমের মাধ্যমে কোডকে আরও ডাইনামিক ও ফ্লেক্সিবল করা যায়।
অ্যাবস্ট্রাকশন হলো কোডের জটিলতা লুকিয়ে রেখে প্রয়োজনীয় বৈশিষ্ট্যগুলো প্রদর্শন করা। এটি এমন একটি প্রক্রিয়া যেখানে কিছু মেথড বা ক্লাসের মাধ্যমে বাইরের বিশ্বের জন্য প্রয়োজনীয় তথ্য প্রদর্শন করা হয়, এবং অবাঞ্ছিত জটিলতাগুলো আড়াল করা হয়। Apex এ Interface এবং Abstract Class ব্যবহার করে অ্যাবস্ট্রাকশন অর্জন করা যায়।
// Abstract Class
public abstract class Vehicle {
public abstract void startEngine();
}
public class Car extends Vehicle {
public override void startEngine() {
System.debug('Car engine started');
}
}
Vehicle
একটি Abstract Class, যেখানে startEngine
একটি অ্যাবস্ট্রাক্ট মেথড। Car
ক্লাসে এটি ওভাররাইড করে প্রয়োজনীয় কোড যোগ করা হয়েছে।অ্যাবস্ট্রাকশনের মাধ্যমে কমপ্লেক্সিটির নিয়ন্ত্রণ করা যায় এবং শুধুমাত্র প্রয়োজনীয় অংশগুলো প্রকাশ করা যায়।
OOP Concepts প্রোগ্রামিংকে আরও সুসংগঠিত, পুনরায় ব্যবহারযোগ্য, এবং রক্ষণাবেক্ষণযোগ্য করে, যা সফটওয়্যার ডেভেলপমেন্টকে আরও সহজ এবং কার্যকরী করে তোলে।
common.read_more